package com.skyworth.util.imageloader;

import android.content.Context;
import android.graphics.drawable.Drawable;
import android.net.Uri;
import android.view.View;
import android.widget.ImageView;

/**
 * Created by luwei on 15-12-28.
 */
public interface IImageLoader {
    /**
     * 初始化
     * @param context
     */
    public void init(Context context);

    /**
     * 消毁
     */
    public void destroy();

    /**
     * 获取view
     * @param context
     * @return
     */
    public View getView(Context context);

    /**
     * 传入上下文context,在需要加载图片时必须最先调用
     * @param context 上下文
     * @return
     */
    public IImageLoader with(Context context);

    /**
     * 设置占位图
     * @param id 占位图id
     * @return
     */
    public IImageLoader setPlaceHolder(int id);

    /**
     * 设置占位图
     * @param drawable
     * @return
     */
    public IImageLoader setPlaceHolder(Drawable drawable);

    /**
     * 后位理变换
     * @param transform
     * @return
     */
    public IImageLoader transform(Transform transform);

    /**
     * 设置需要加载图片的Uri
     * @param uri
     * @return
     */
    public IImageLoader load(Uri uri);

    public IImageLoader load(int id);

    /**
     * 设置需要加载小图的uri
     * @param uri
     * @return
     */
    public IImageLoader small(Uri uri);

    public IImageLoader circle(CircleParams params);

    /**
     * 需要图片的大小
     * @param width
     * @param height
     * @return
     */
    public IImageLoader resize(int width, int height);

    public IImageLoader showAnimation(boolean show);

    /**
     * 设置需要显示图片的view，在加载图片时必须最后调用
     * @param view
     * @return
     */
    public void into(View view);

    /**
     * 设置需要显示的scaleType
     * @param scaleType
     * @return
     */
    public IImageLoader setScaleType(ImageView.ScaleType scaleType);


    public IImageLoader wrapContent();

    public IImageLoader finalCallback(FinalCallback callback);

    public void getBitmap(OnBitmapLoadListener listener);

    public void startAnimation(View view);

    public void stopAnimation(View view);

    public IImageLoader setLeftTopCorner(float corner);

    public IImageLoader setLeftBottomCorner(float corner);

    public IImageLoader setRightTopCorner(float corner);

    public IImageLoader setRightBottomCorner(float corner);

    public void clearCacheFromMemory(String url);

    public void reset(View view);

    public void clearCache(String url);

    public void updateThreadPriority(int priopity);
}
